home *** CD-ROM | disk | FTP | other *** search
-
-
-
- DDDDBBBBOOOOPPPPEEEENNNN((((3333)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ((((JJJJaaaannnnuuuuaaaarrrryyyy 2222,,,, 1111999999994444)))) DDDDBBBBOOOOPPPPEEEENNNN((((3333))))
-
-
-
- NNNNAAAAMMMMEEEE
- dbopen - database access methods
-
- SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
- ####iiiinnnncccclllluuuuddddeeee <<<<ssssyyyyssss////ttttyyyyppppeeeessss....hhhh>>>>
- ####iiiinnnncccclllluuuuddddeeee <<<<lllliiiimmmmiiiittttssss....hhhh>>>>
- ####iiiinnnncccclllluuuuddddeeee <<<<ddddbbbb....hhhh>>>>
-
- DDDDBBBB ****
- ddddbbbbooooppppeeeennnn((((ccccoooonnnnsssstttt cccchhhhaaaarrrr ****ffffiiiilllleeee,,,, iiiinnnntttt ffffllllaaaaggggssss,,,, iiiinnnntttt mmmmooooddddeeee,,,, DDDDBBBBTTTTYYYYPPPPEEEE ttttyyyyppppeeee,,,,
- ccccoooonnnnsssstttt vvvvooooiiiidddd ****ooooppppeeeennnniiiinnnnffffoooo))));;;;
-
- DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
- _D_b_o_p_e_n is the library interface to database files. The
- supported file formats are btree, hashed and UNIX file
- oriented. The btree format is a representation of a sorted,
- balanced tree structure. The hashed format is an
- extensible, dynamic hashing scheme. The flat-file format is
- a byte stream file with fixed or variable length records.
- The formats and file format specific information are
- described in detail in their respective manual pages
- _b_t_r_e_e(3), _h_a_s_h(3) and _r_e_c_n_o(3).
-
- Dbopen opens _f_i_l_e for reading and/or writing. Files never
- intended to be preserved on disk may be created by setting
- the file parameter to NULL.
-
- The _f_l_a_g_s and _m_o_d_e _a_r_g_u_m_e_n_t_s are as specified to the _o_p_e_n(2)
- routine, however, only the O_CREAT, O_EXCL, O_EXLOCK,
- O_NONBLOCK, O_RDONLY, O_RDWR, O_SHLOCK and O_TRUNC flags are
- meaningful. (Note, opening a database file O_WRONLY is not
- possible.)
-
- The _t_y_p_e argument is of type DBTYPE (as defined in the
- <db.h> include file) and may be set to DB_BTREE, DB_HASH or
- DB_RECNO.
-
- The _o_p_e_n_i_n_f_o argument is a pointer to an access method
- specific structure described in the access method's manual
- page. If _o_p_e_n_i_n_f_o is NULL, each access method will use
- defaults appropriate for the system and the access method.
-
- _D_b_o_p_e_n returns a pointer to a DB structure on success and
- NULL on error. The DB structure is defined in the <db.h>
- include file, and contains at least the following fields:
-
- typedef struct {
- DBTYPE type;
- int (*close)(const DB *db);
- int (*del)(const DB *db, const DBT *key, u_int flags);
- int (*fd)(const DB *db);
- int (*get)(const DB *db, DBT *key, DBT *data, u_int flags);
-
-
-
- Page 1 (printed 4/30/98)
-
-
-
-
-
-
- DDDDBBBBOOOOPPPPEEEENNNN((((3333)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ((((JJJJaaaannnnuuuuaaaarrrryyyy 2222,,,, 1111999999994444)))) DDDDBBBBOOOOPPPPEEEENNNN((((3333))))
-
-
-
- int (*put)(const DB *db, DBT *key, const DBT *data,
- u_int flags);
- int (*sync)(const DB *db, u_int flags);
- int (*seq)(const DB *db, DBT *key, DBT *data, u_int flags);
- } DB;
-
- These elements describe a database type and a set of
- functions performing various actions. These functions take
- a pointer to a structure as returned by _d_b_o_p_e_n, and
- sometimes one or more pointers to key/data structures and a
- flag value.
-
- type The type of the underlying access method (and file
- format).
-
- close
- A pointer to a routine to flush any cached information
- to disk, free any allocated resources, and close the
- underlying file(s). Since key/data pairs may be cached
- in memory, failing to sync the file with a _c_l_o_s_e or
- _s_y_n_c function may result in inconsistent or lost
- information. _C_l_o_s_e routines return -1 on error
- (setting _e_r_r_n_o) and 0 on success.
-
- del A pointer to a routine to remove key/data pairs from
- the database.
-
- The parameter _f_l_a_g may be set to the following value:
-
- R_CURSOR
- Delete the record referenced by the cursor. The
- cursor must have previously been initialized.
-
- _D_e_l_e_t_e routines return -1 on error (setting _e_r_r_n_o), 0
- on success, and 1 if the specified _k_e_y was not in the
- file.
-
- fd A pointer to a routine which returns a file descriptor
- representative of the underlying database. A file
- descriptor referencing the same file will be returned
- to all processes which call _d_b_o_p_e_n with the same _f_i_l_e
- name. This file descriptor may be safely used as an
- argument to the _f_c_n_t_l(2) and _f_l_o_c_k(2) locking
- functions. The file descriptor is not necessarily
- associated with any of the underlying files used by the
- access method. No file descriptor is available for in
- memory databases. _F_d routines return -1 on error
- (setting _e_r_r_n_o), and the file descriptor on success.
-
- get A pointer to a routine which is the interface for keyed
- retrieval from the database. The address and length of
- the data associated with the specified _k_e_y are returned
-
-
-
- Page 2 (printed 4/30/98)
-
-
-
-
-
-
- DDDDBBBBOOOOPPPPEEEENNNN((((3333)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ((((JJJJaaaannnnuuuuaaaarrrryyyy 2222,,,, 1111999999994444)))) DDDDBBBBOOOOPPPPEEEENNNN((((3333))))
-
-
-
- in the structure referenced by _d_a_t_a. _G_e_t routines
- return -1 on error (setting _e_r_r_n_o), 0 on success, and 1
- if the _k_e_y was not in the file.
-
- put A pointer to a routine to store key/data pairs in the
- database.
-
- The parameter _f_l_a_g may be set to one of the following
- values:
-
- R_CURSOR
- Replace the key/data pair referenced by the
- cursor. The cursor must have previously been
- initialized.
-
- R_IAFTER
- Append the data immediately after the data
- referenced by _k_e_y, creating a new key/data pair.
- The record number of the appended key/data pair is
- returned in the _k_e_y structure. (Applicable only
- to the DB_RECNO access method.)
-
- R_IBEFORE
- Insert the data immediately before the data
- referenced by _k_e_y, creating a new key/data pair.
- The record number of the inserted key/data pair is
- returned in the _k_e_y structure. (Applicable only
- to the DB_RECNO access method.)
-
- R_NOOVERWRITE
- Enter the new key/data pair only if the key does
- not previously exist.
-
- R_SETCURSOR
- Store the key/data pair, setting or initializing
- the position of the cursor to reference it.
- (Applicable only to the DB_BTREE and DB_RECNO
- access methods.)
-
- R_SETCURSOR is available only for the DB_BTREE and
- DB_RECNO access methods because it implies that the
- keys have an inherent order which does not change.
-
- R_IAFTER and R_IBEFORE are available only for the
- DB_RECNO access method because they each imply that the
- access method is able to create new keys. This is only
- true if the keys are ordered and independent, record
- numbers for example.
-
- The default behavior of the _p_u_t routines is to enter
- the new key/data pair, replacing any previously
- existing key.
-
-
-
- Page 3 (printed 4/30/98)
-
-
-
-
-
-
- DDDDBBBBOOOOPPPPEEEENNNN((((3333)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ((((JJJJaaaannnnuuuuaaaarrrryyyy 2222,,,, 1111999999994444)))) DDDDBBBBOOOOPPPPEEEENNNN((((3333))))
-
-
-
- _P_u_t routines return -1 on error (setting _e_r_r_n_o), 0 on
- success, and 1 if the R_NOOVERWRITE _f_l_a_g was set and
- the key already exists in the file.
-
- seq A pointer to a routine which is the interface for
- sequential retrieval from the database. The address
- and length of the key are returned in the structure
- referenced by _k_e_y, and the address and length of the
- data are returned in the structure referenced by _d_a_t_a.
-
- Sequential key/data pair retrieval may begin at any
- time, and the position of the ``cursor'' is not
- affected by calls to the _d_e_l, _g_e_t, _p_u_t, or _s_y_n_c
- routines. Modifications to the database during a
- sequential scan will be reflected in the scan, i.e.
- records inserted behind the cursor will not be returned
- while records inserted in front of the cursor will be
- returned.
-
- The flag value mmmmuuuusssstttt be set to one of the following
- values:
-
- R_CURSOR
- The data associated with the specified key is
- returned. This differs from the _g_e_t routines in
- that it sets or initializes the cursor to the
- location of the key as well. (Note, for the
- DB_BTREE access method, the returned key is not
- necessarily an exact match for the specified key.
- The returned key is the smallest key greater than
- or equal to the specified key, permitting partial
- key matches and range searches.)
-
- R_FIRST
- The first key/data pair of the database is
- returned, and the cursor is set or initialized to
- reference it.
-
- R_LAST
- The last key/data pair of the database is
- returned, and the cursor is set or initialized to
- reference it. (Applicable only to the DB_BTREE
- and DB_RECNO access methods.)
-
- R_NEXT
- Retrieve the key/data pair immediately after the
- cursor. If the cursor is not yet set, this is the
- same as the R_FIRST flag.
-
- R_PREV
- Retrieve the key/data pair immediately before the
- cursor. If the cursor is not yet set, this is the
-
-
-
- Page 4 (printed 4/30/98)
-
-
-
-
-
-
- DDDDBBBBOOOOPPPPEEEENNNN((((3333)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ((((JJJJaaaannnnuuuuaaaarrrryyyy 2222,,,, 1111999999994444)))) DDDDBBBBOOOOPPPPEEEENNNN((((3333))))
-
-
-
- same as the R_LAST flag. (Applicable only to the
- DB_BTREE and DB_RECNO access methods.)
-
- R_LAST and R_PREV are available only for the DB_BTREE
- and DB_RECNO access methods because they each imply
- that the keys have an inherent order which does not
- change.
-
- _S_e_q routines return -1 on error (setting _e_r_r_n_o), 0 on
- success and 1 if there are no key/data pairs less than
- or greater than the specified or current key. If the
- DB_RECNO access method is being used, and if the
- database file is a character special file and no
- complete key/data pairs are currently available, the
- _s_e_q routines return 2.
-
- sync A pointer to a routine to flush any cached information
- to disk. If the database is in memory only, the _s_y_n_c
- routine has no effect and will always succeed.
-
- The flag value may be set to the following value:
-
- R_RECNOSYNC
- If the DB_RECNO access method is being used, this
- flag causes the sync routine to apply to the btree
- file which underlies the recno file, not the recno
- file itself. (See the _b_f_n_a_m_e field of the
- _r_e_c_n_o(3) manual page for more information.)
-
- _S_y_n_c routines return -1 on error (setting _e_r_r_n_o) and 0
- on success.
-
- KKKKEEEEYYYY////DDDDAAAATTTTAAAA PPPPAAAAIIIIRRRRSSSS
- Access to all file types is based on key/data pairs. Both
- keys and data are represented by the following data
- structure:
-
- typedef struct {
- void *data;
- size_t size;
- } DBT;
-
- The elements of the DBT structure are defined as follows:
-
- data A pointer to a byte string.
-
- size The length of the byte string.
-
- Key and data byte strings may reference strings of
- essentially unlimited length although any two of them must
- fit into available memory at the same time. It should be
- noted that the access methods provide no guarantees about
-
-
-
- Page 5 (printed 4/30/98)
-
-
-
-
-
-
- DDDDBBBBOOOOPPPPEEEENNNN((((3333)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ((((JJJJaaaannnnuuuuaaaarrrryyyy 2222,,,, 1111999999994444)))) DDDDBBBBOOOOPPPPEEEENNNN((((3333))))
-
-
-
- byte string alignment.
-
- EEEERRRRRRRROOOORRRRSSSS
- The _d_b_o_p_e_n routine may fail and set _e_r_r_n_o for any of the
- errors specified for the library routines _o_p_e_n(2) and
- _m_a_l_l_o_c(3) or the following:
-
- [EFTYPE]
- A file is incorrectly formatted.
-
- [EINVAL]
- A parameter has been specified (hash function, pad byte
- etc.) that is incompatible with the current file
- specification or which is not meaningful for the
- function (for example, use of the cursor without prior
- initialization) or there is a mismatch between the
- version number of file and the software.
-
- The _c_l_o_s_e routines may fail and set _e_r_r_n_o for any of the
- errors specified for the library routines _c_l_o_s_e(2), _r_e_a_d(2),
- _w_r_i_t_e(2), _f_r_e_e(3), or _f_s_y_n_c(2).
-
- The _d_e_l, _g_e_t, _p_u_t and _s_e_q routines may fail and set _e_r_r_n_o
- for any of the errors specified for the library routines
- _r_e_a_d(2), _w_r_i_t_e(2), _f_r_e_e(3) or _m_a_l_l_o_c(3).
-
- The _f_d routines will fail and set _e_r_r_n_o to ENOENT for in
- memory databases.
-
- The _s_y_n_c routines may fail and set _e_r_r_n_o for any of the
- errors specified for the library routine _f_s_y_n_c(2).
-
- SSSSEEEEEEEE AAAALLLLSSSSOOOO
- _b_t_r_e_e(3), _h_a_s_h(3), _m_p_o_o_l(3), _r_e_c_n_o(3)
-
- _L_I_B_T_P: _P_o_r_t_a_b_l_e, _M_o_d_u_l_a_r _T_r_a_n_s_a_c_t_i_o_n_s _f_o_r _U_N_I_X, Margo
- Seltzer, Michael Olson, USENIX proceedings, Winter 1992.
-
- BBBBUUUUGGGGSSSS
- The typedef DBT is a mnemonic for ``data base thang'', and
- was used because noone could think of a reasonable name that
- wasn't already used.
-
- The file descriptor interface is a kluge and will be deleted
- in a future version of the interface.
-
- None of the access methods provide any form of concurrent
- access, locking, or transactions.
-
- This version of berkeley db (1.85) is free software which is
- not developed nor maintained by SGI. It is known to have
- some bugs that are unlikely to get fixed (See NOTES below)
-
-
-
- Page 6 (printed 4/30/98)
-
-
-
-
-
-
- DDDDBBBBOOOOPPPPEEEENNNN((((3333)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ((((JJJJaaaannnnuuuuaaaarrrryyyy 2222,,,, 1111999999994444)))) DDDDBBBBOOOOPPPPEEEENNNN((((3333))))
-
-
-
- in particular, certain cursor and certain deletion/overwrite
- operations are known to have problems, up to corrupting
- databases, and should be avoided according to
- http://www.sleepycat.com/db.185.html. See _h_a_s_h(3), and
- _b_t_r_e_e(3) for details.
-
-
- NNNNOOOOTTTTEEEESSSS
- The default hash function in this version of db is the
- Fowler/Vo/Noll hash which gives better distributions (less
- collisions) on average than the publicly released version.
-
- This version of berkeley db is 1.85. A newer, enhanced
- version db-2.x requires licensing. Check out
- http://www.sleepycat.com/ for details.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Page 7 (printed 4/30/98)
-
-
-
-